package com.tydic;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

public class FileCopy {

	/**
	 * 执行此命令，可以替换指定文件中的指定替换符号
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		PropsUtil propsUtil=new PropsUtil();
		//获取配置文件中属性
		Properties pro=propsUtil.readSingleProps("/defalut.properties");
		String PriFileStr="D:\\test_file\\testStrReplace.sh";
		String newFileStr="D:\\test_file\\copy\\testStrReplace.sh";
		fileCopy(PriFileStr,newFileStr,pro);
		}
	/**
	 * 
	 * @param PriFileStr
	 * @param targetFileStr
	 * @param replaceContent
	 * @param newContent
	 * @throws Exception
	 */
	static void fileCopy(String PriFileStr,String targetFileStr,Properties pro) throws Exception{
		File sourceFile = new File(PriFileStr);//已经存在的模板文件
		  File targetFile = new File(targetFileStr);//需要建立的新文件
		  if(!targetFile.exists()){
		   targetFile.createNewFile();
		  }
		  else if(targetFile.exists()){
		   System.out.println("被复制的文件已存在");
		  } 
		  BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(PriFileStr),"GBK"));
		  BufferedWriter bw = new BufferedWriter(new FileWriter(targetFile));
		  String str = null;
		  while( (str = br.readLine()) != null){
			  //获取${ }内的替代字符串
			  List<String> datas = RegUtil.findData(str) ; 
				Map<String,String> map = new LinkedHashMap<String, String>();
				//对应的值存入Map中
				for(String data : datas){
					map.put(data,pro.get(data).toString() ) ; 
				}
				str= RegUtil.replace(str, map , true )+"\n";
		   bw.write(str);
		  }
		  bw.flush();
		 }
}
